package io;

import java.io.File;
import java.util.Scanner;

public class IODemo13 {
    public static void main(String[] args) {
        //1.输入必要信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要搜索的文件名: ");
        String fileName = scanner.next();
        System.out.println("请输入要搜索的目录: ");
        String rootPath = scanner.next();
        File rootFile = new File(rootPath);
        if (!rootFile.isDirectory()) {
            System.out.println("输入路径有误!");
            return;
        }

        //2.有了搜索路径以后就可以按照递归的方式搜索
        //  知道递归的起点,还需要知道查询的文件名
        scanDir(rootFile,fileName);
    }

    private static void scanDir(File rootFile, String fileName) {
        //1.把当前目录中的文件和子目录都列出来
        File[] files = rootFile.listFiles();
        if (files == null) {
            //空的目录直接返回
            return;
        }
        //2.遍历上述 files,判断每一个 file 是文件还是目录
        for (File f : files) {
            //更清楚看见这个过程
            System.out.println("当前遍历到:" + f.getAbsolutePath());
            if (f.isFile()) {
                //普通文件,判定文件名是否是搜索的文件
                if (fileName.equals(f.getName())) {
                    //打印绝对路径
                    System.out.println("找到了符合要求的文件! " + f.getAbsolutePath());
                }
            } else if (f.isDirectory()) {
                //目录文件,就需要进一步的递归
                scanDir(f,fileName);
            }
        }
    }
}
